<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;
use think\Request;
use think\Session;


class User extends Controller
{
    protected $beforeActionList = [
        'init' => ['except'=>'save,change'],
    ];
    public function init()
    {
        $request= Request::instance();
        $a=$request->controller();
        $b=$request->action();

        $pid=Db::table('hb_permission')
            ->field('id')
            ->where('controller',$a)
            ->where('method',$b)
            ->find();
//dump($pid);
        $a=Session::get('pid');
//        dump($a);
        if (!in_array($pid['id'],$a))
        {
            return $this->error('没有此权限,沙雕!!',url('admin/index/index'));
        }

    }

    public function index()
    {
//        查询所有的用户信息
        $userlist=Db::table('hb_user')
            ->field(['id','username'])
            ->select();
//        dump($userlist);


        $arr=$userlist;
        $test=null;

        foreach ($userlist as $c=>$v)
        {
//          查询对应用户的角色信息
            $rolelist=Db::table(['hb_role'=>'r','user_role'=>'ur'])
                ->field(['r.rolename','ur.u_id'])
                ->where('r.id=ur.r_id')
                ->where('ur.u_id',$v['id'])
                ->select();
//            dump($rolelist);


            foreach ($rolelist as $k=>$v)
            {
                if ($test==$v['u_id']){
                    array_push($a,$v['rolename']);

                }else{
                    $test=$v['u_id'];
                    $a=array($v['rolename']);
                }
//                拼凑出需要的数组
                $arr[$c]['rolename']=$a;
            }
        }
//        dump($arr);

        return view('admin@user/index',[
            'title'=>'用户列表',
            'data'=>$arr
        ]);




























//       $result= Db::table(['hb_user'=>'u','hb_role'=>'r','user_role'=>'ur'])
//            ->field(['ur.u_id','u.username','r.rolename'])
//            ->where('u.id=ur.u_id')
//            ->where('r.id=ur.r_id')
//            ->order('u.id','asc')
//            ->select();

//
//        //        dump($result);
//        $arr=null;
//
//        $data= array();
//        $i=0;
//        foreach ($result as $k=>$v){
//            dump($v['u_id']);
//            dump($v['rolename']);
//
//            if ($arr==$v['u_id'])
//            {
//                $data[$i]['u_id']=$v['u_id'];
//                $data[]['username']=$v['username'];
//                $data[]['rolename']=array($v['rolename']);
//
//            }else{
//                $arr=$v['u_id'];
//                $data[$i]['u_id']=$v['u_id'];
//                $data[$i]['username']=$v['username'];
//                $data[$i]['rolename']=array($v['rolename']);
//                $i++;
//
//            }
//
//        }
//        //        dump($data);
//        return view('admin@user/index',[
//            'data'=>$result
//        ]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
    //        return '添加表单';
        return view('user/create', [
            'title'=>'填个用户!'
        ]);
    }

    /**
     * 保存新建的资源
     *
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $p=$request->post();
//        $p['rolename']=[];
//        dump($p);
        $id = Db::name('user')
            ->insertGetId($p);
        $a=[
            'u_id'=>$id,
            'r_id'=>6,
        ];

        $result=Db::table('user_role')
            ->insert($a);
        if ($result>0) {
            return $this->success('添加成功', url('admin/user/index'));
        } else {
            return $this->error('添加失败,请重试!!');
        }
    }


/**
 * 用户分配角色
 *
 * @param  string 用户id数据
 *
 * */
    public function portion($id)
    {
//        查出所有的角色,在表单中遍历出来
       $roles= Db::name('role')
            ->select();
//       查询当前用户对应的角色
    $result=Db::table(['hb_user'=>'u','user_role'=>'ur'])
        ->field('ur.r_id')
        ->where('u.id=ur.u_id')
        ->where('u.id',$id)
        ->select();
//    dump($result);

//        将查询的二维数组转化为一维数组
    $a=[];
    foreach ($result as $k =>$v)
    {
        $a[]=$v['r_id'];
    }
//    dump($a);
//    给数组加一个字段 checked  用来 判断是否 选中
        foreach ($roles as $k =>$v)
        {
            if (in_array($v['id'],$a) )
            {
                $roles[$k]['checked']=true;
            }else{
                $roles[$k]['checked']=false;
            }
        }
//        dump($roles);

        return view('user/portion', [
            'title'=>'分配角色!',
            'roles'=>$roles,
            'id'=>$id,
        ]);
    }

    public function change(Request $request)
    {
        $p=$request->post();
//        dump($p);
        $a=$p['role'];


        foreach ($a as $v)
        {
            $data[]=['u_id'=>$p['u_id'],'r_id'=>$v];
        }
//        dump($data);

        Db::table('user_role')
            ->where('u_id',$p['u_id'])
            ->delete();

       $result= Db::table('user_role')->insertAll($data);
        if ($result>0) {
            return $this->success('分配角色成功', url('admin/user/index'));
        } else {
            return $this->error('分配角色失败,请重试!!');
        }




    }

}